ホームに戻る
関連 :
目次 :
ウィンドウが閉じるのをキャンセルする
×ボタン押下や Close() 呼び出しでウィンドウを閉じる際、Closing ハンドラ中で CancelEventArgs.Cancel = true とすることでウィンドウが閉じるのをキャンセルできる。
詳細
リンク先を併せて参照のこと。
×ボタンを押下した場合は Close() が暗黙的に呼び出され、それを受けて Closing イベントが発生する。
( Close() を明示的に呼び出した場合も同様。)
その際にイベント引数( CancelEventArgs )が渡されるが、Closing ハンドラが CancelEventArgs.Cancel == false のまま終了するとウィンドウが閉じられる。
逆に CancelEventArgs.Cancel == true とすることでウィンドウが閉じるのを阻止することができる。
実装例
public partial class MainWindow : Window
{
:
/// <summary>
/// ウィンドウが閉じられる直前の処理
/// </summary>
private void Window_Closing( object sender, System.ComponentModel.CancelEventArgs e )
{
// 問い合わせ表示
// 「はい」押下時以外はウィンドウ閉をキャンセル
// ( e.Cancel に true をセット)
e.Cancel = Util.MessageBoxFunc.ShowYesNoMsgBox( "終了しますか?" ) != Util.MessageBoxFunc.E_Result.Yes;
}
/// <summary>
/// 「終了」ボタンクリック時の処理
/// </summary>
private void Button_Click_Exit( object sender, RoutedEventArgs e )
{
// ウィンドウを閉じる
Close();
}
}
処理の流れ :
- 「終了」ボタンが押下される
- 「終了」ボタンのクリックハンドラ中で Close() が呼ばれる
- ウィンドウの Closing イベントが発生する
- Closing イベントハンドラ中で e.Cancel = true とするとウィンドウが閉じるのがキャンセルされる